#include "mainwindow.h"
#include "./ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    auto_save_time = ui->auto_save_time_lineEdit->text().toUInt();
    qDebug() << "自动保存时间为:" << auto_save_time;
    image = new QImage("BBB.jpg");
    if (image->isNull()) {
        img_state = false;
        qDebug() << "无法加载图片";
        QMessageBox::critical(this, "错误", "无法加载图片,找不到BBB.jpg");
        return;
    }
    img_state = true;
    ui->show_image_label->setPixmap(QPixmap::fromImage(*image));
    ui->show_image_label->show();
    timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, &MainWindow::onTimeout);
    timer->start(1000); // 每1000毫秒（1秒）触发一次timeout信号
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_auto_save_pushButton_clicked()
{
    // 读取QLineEdit的内容
    auto_save_time = ui->auto_save_time_lineEdit->text().toUInt();
    qDebug() << "自动保存时间为:" << auto_save_time;
    time_1s = 0;
}

void MainWindow::onTimeout() {
     // 不做任何动作
    if (auto_save_time == 0 || img_state == false) {
        time_1s = 0;
        return;
    }
    time_1s++;
    QImage time_stamp_image = *image;
    // 获取当前时间并格式化为字符串
    time_stamp = QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss");

    // 创建一个QPainter对象，用于在图片上绘制文本
    QPainter painter(&time_stamp_image);
    painter.setPen(Qt::black); // 设置文本颜色为黑色
    painter.setFont(QFont("Arial", 10)); // 设置字体和大小

    // 获取图片的宽度和高度，以及文本的宽度和高度
    int textWidth = painter.fontMetrics().horizontalAdvance(time_stamp);
    int textHeight = painter.fontMetrics().height();

    // 计算文本绘制的起始x坐标（图片下方中间位置）
    int x = (time_stamp_image.width() - textWidth) / 2;

    // 设置文本绘制的y坐标为图片高度减去文本高度
    int y = time_stamp_image.height() - 5;

    // 在图片上绘制时间戳文本
    painter.drawText(x, y, time_stamp);
    ui->show_image_label->setPixmap(QPixmap::fromImage(time_stamp_image));
    ui->show_image_label->show();
    if (auto_save_time > time_1s) {
        return;
    }
    time_1s = 0;
    // 指定保存目录并保存带有时间戳的图片为另一个文件名
    //QString saveDir = ""; // 保存目录
    // 将时间戳中的冒号和/替换为下划线
   // QString time_stamp_save = time_stamp.replace(":", "_");
   // time_stamp_save.replace("/", "_");
   // QString saveFileName = saveDir + "output_" + time_stamp_save + ".jpg";
    QString saveFileName = "logo.jpg";
    time_stamp_image.save(saveFileName);

    qDebug() << "图片已保存为：" << saveFileName;
}
#if 0
#include <QApplication>
#include <QSettings>
#include <QCoreApplication>
#include <QDir>
#include <QMessageBox>

// 定义注册表路径
#define AUTO_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"

void setProcessAutoRunSelf(bool isStart) {
    QSettings settings(AUTO_RUN, QSettings::NativeFormat);

    // 获取应用名称和路径
    QString applicationName = QCoreApplication::applicationName();
    QString applicationPath = QCoreApplication::applicationFilePath();
    QString nativePath = QDir::toNativeSeparators(applicationPath);

    // 如果isStart为true，则将应用程序路径写入注册表
    if (isStart) {
        settings.setValue(applicationName, nativePath);
    } else {
        // 否则，从注册表中删除对应的项
        settings.remove(applicationName);
    }
}

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // 假设这里有一些GUI代码或其他初始化代码...

    // 设置开机自启动
    setProcessAutoRunSelf(true); // 传递false来取消开机自启动

    // 显示一个消息框来确认设置（仅用于演示）
    QMessageBox::information(nullptr, "开机自启动", "程序已设置为开机自启动");

    // 进入应用程序的主事件循环
    return app.exec();
}
#endif
